package modelo;

import geometria.Coordenada;
import geometria.Rectangulo;
import geometria.Segmento;


public class PistaSimple extends Pista {

	Segmento cabecera;

	public PistaSimple(Coordenada pos, Double angulo) {
		this.angulo = angulo;
		this.maxCarreteo = 200D;
		this.maxPeso = 100D;
		this.ancho = 20D;
		this.largo = 80D;
		this.generarLimites(pos, angulo);
	}

	@Override
	public boolean esAproximacionValida(Coordenada origen, Coordenada destino) {
//		Point pointDestino = new Point();
//		pointDestino.setLocation(destino.x, destino.y);
//		// Construyo una linea que representa la trayectoria
//		Line2D lineaTrayectoria = new Line2D.Double();
//		lineaTrayectoria.setLine( origen.x, origen.y, destino.x, destino.y);
//		//La aproximación es valida si interseca la cabecera y el destino esta en la pista
//		return (lineaTrayectoria.intersectsLine(this.cabecera) && this.limites.contains( pointDestino ));

		Segmento trayectoria = new Segmento(origen,destino);
		return (trayectoria.intersecaCon(this.cabecera) && this.limites.contiene(destino));



	}

	
	// Este m�todo seguro termine en Pista.

	
	@Override
	protected void generarLimites(Coordenada pos, Double rotacion) {
		//Point p1 = new Point();
		//Point p2 = new Point();
		//coordenadas de la cabecera
		Coordenada c1,c2; 

		//Rectangle2D.Double rectangulo = new Rectangle2D.Double(pos.x, pos.y,
		//		this.ancho, this.largo);
		this.limites = new Rectangulo( pos.getX() - this.ancho/2, pos.getY() - this.largo/2, this.ancho, this.largo);
		
		
		// Entre estos dos puntos tiene que pasar una nave.
		// p1.setLocation(rectangulo.x, rectangulo.y);
		// p2.setLocation(rectangulo.x + rectangulo.width, rectangulo.y);
		c1 = new Coordenada(pos.getX() - ancho/2, pos.getY() - largo/2 );
		
		
		c2 = new Coordenada(pos.getX() + this.ancho/2 , pos.getY() - largo/2); 
		this.cabecera = new Segmento(c1, c2);
		//this.limites = rectangulo;

		//AffineTransform transform;
		//transform = AffineTransform.getRotateInstance(rotacion,
		//		rectangulo.getCenterX(), rectangulo.getCenterY());
		//this.limites = transform.createTransformedShape(rectangulo);
		//this.cabecera = getLineaGirada(this.cabecera, transform);
		this.limites.rotar(rotacion);
		this.cabecera = this.cabecera.getLineaGirada(rotacion,this.limites.getCoordenadaCentral());

		return;

	}
	
	public Segmento getCabecera(){
		return this.cabecera;
	}
	


}
